package br.com.hmm.mb;

import java.util.List;

import javax.faces.component.UIData;

import br.com.hmm.businesslogic.UsuarioService;
import br.com.hmm.entidade.Usuario;

public class UsuarioBean extends GenericoBean {
	
	private Usuario usuario;
	
	private Usuario usuarioSelecionado;
	
	private List<Usuario> listaUsuarios;
	
	private UIData tblUsuarios;
	
	public UsuarioBean(){
		usuario = new Usuario();
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public List<Usuario> getListaUsuarios() {
		return listaUsuarios;
	}

	public void setListaUsuarios(List<Usuario> listaUsuarios) {
		this.listaUsuarios = listaUsuarios;
	}

	public UIData getTblUsuarios() {
		return tblUsuarios;
	}

	public void setTblUsuarios(UIData tblUsuarios) {
		this.tblUsuarios = tblUsuarios;
	}

	public void setUsuarioSelecionado(Usuario usuarioSelecionado) {
		this.usuarioSelecionado = usuarioSelecionado;
	}

	public Usuario getUsuarioSelecionado() {
		return usuarioSelecionado;
	}

	/**
	 * 
	 * @return
	 */
	public String novoUsuario(){
		usuario = new Usuario();
		findAll();
		return "goUsuario";
	}
	
	/**
	 * 
	 * @return
	 */
	public String gravar(){
		try{
			if(UsuarioService.inserir(usuario) == true){
				atualizarLista();
				adicionarMensagem("Usuário criado com sucesso");
			}else{
				adicionarMensagemErro("O usuário já existe");
			}
		}catch(Exception e){
			adicionarMensagemErro("Erro: " + e.getMessage());
		}
		return "";
	}
	
	/**
	 * Retorna uma lista com todos usuários cadastrados
	 */
	public void findAll(){
		try{
			setListaUsuarios(UsuarioService.list());
			if(listaUsuarios.isEmpty()){
				adicionarMensagemErro("Nenum usuário encontrado.");
			}
		}catch(Exception e){
			adicionarMensagemErro("Nenum usuário encontrado."); 
		}
	}
	
	/**
	 * 
	 */
	public void atualizarLista(){
		try{
			usuario = new Usuario();
			findAll();
			
		}catch(Exception e){
			adicionarMensagemErro("Erro: " + e.getLocalizedMessage()); 
		}
		
	}
	
	/**
	 * 
	 */
	public void delete(){
		try{
			this.usuario = (Usuario) tblUsuarios.getRowData();
			if(UsuarioService.delete(usuario) == true){
				listaUsuarios.remove(tblUsuarios.getRowIndex());
				destroiSessao("UsuarioBean");
				adicionarMensagem("Usuário removido com sucesso.");
			}else{
				adicionarMensagemErro("Não foi possível remover o usuário");
			}
			
		}catch(Exception e){
			adicionarMensagemErro("Não foi possível remover o usuário");
		}
	}
	
	/**
	 * 
	 * @return
	 */
	public String edicaoUsuario(){
		usuarioSelecionado = (Usuario) tblUsuarios.getRowData();
		return "goEdicaoUsuario";
	}
	
	/**
	 * 
	 * @return
	 */
	public String atualizar(){
		try{
			if(UsuarioService.atualizar(usuarioSelecionado) == true){
				destroiSessao("UsuarioBean");
				adicionarMensagem("Usuário alterado com sucesso.");
			}
		}catch(Exception e){
			adicionarMensagemErro("Não foi possível alterar os dados do usuário.");
		}
		
		return novoUsuario();
	}
	
	public String voltar(){
		return "goUsuario";
	}
	
	
	
}
